package cn.yunhe.insurance.service;


import cn.yunhe.insurance.entity.Cars;
import cn.yunhe.insurance.entity.Combo;
import cn.yunhe.insurance.entity.Order;
import cn.yunhe.insurance.entity.User;
import com.github.pagehelper.Page;

import javax.servlet.ServletOutputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author 苏文秀
 * @date 2018/9/14 17:04
 */
public interface OrderService {
    /**
     * 分页查询 交易信息
     * @param map
     * @return
     */
    Page<Order> getOrderPage(Map<String, Object> map);

    /**
     * 购买保险
     * @param order
     * @return
     */
    boolean addInsurance(Order order);

    /**
     * 根据证件号和车牌号获取信息
     * @param map
     * @return
     */
    Order getOrderByUserAndCars(Map<String, Object> map);

    /**
     * 根据保单的 保单号 查询详细信息
     * @param oid
     * @return
     */
    Order getOrderDetail(String oid);

    /**
     * 退保
     * @param order
     * @return
     */
    boolean updateOstate(Order order);

    /**
     * 根据客户的 身份证号查询 系统中是否已存在客户的信息
     * @param idcard
     * @return
     */
    User getUserByIdCard(String idcard);

    /**
     * 根据车牌号查询 客户的信息
     * @param licensenum
     * @return
     */
    Cars getCarsByLicensenum(String licensenum);

    /**
     * 根据车牌号  查询保单信息
     * @param licenseNum
     * @return
     */
    Order getOrderInfoByCarLicenseNum(String licenseNum);

    /**
     * 获取  所有的套餐
     * @return
     */
    List<Combo> getAllCombo();

    /**
     * 根据ouid获取订单信息
     * @param ouid
     * @return
     */
    Order getOrderByOuid(String ouid);
    /**
     * 更改此订单的支付状态
     * @param order
     * @return
     */
    boolean updateOrderPaystate(Order order);

    /**
     * 更改订单的状态 ---- ostatus=0 关闭订单
     * @param order
     * @return
     */
    boolean updateOrderStatus(Order order);

    /**
     * 导出保单
     * @param titles
     * @param out
     */
    void export(String[] titles, ServletOutputStream out);

    List<Cars> getCarByUser(String idcard);

    double getRateByCarPrice(double carPrice);


    double getCombPrice(String comuuid, String licensenum);

    int getOrderByCar(String carNo);
}
